package com.linkgie.galaxyframework.metadata;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.springframework.core.annotation.AliasFor;
import org.springframework.stereotype.Component;


/**
 * 数据实体标注；<br>
 * 
 * 用于将一个“类（Class）”标注为业务领域的“实体（Entity）”，被标注的“类”被称为“实体类”；<br>
 * 
 * 一个“实体类”的数据结构会被以元数据的形式导出，“实体类”的数据结构元数据被称为“数据模型”；
 * 
 * @author huanghaiquan
 *
 */
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface DataEntity {
	/**
	 * 数据实体类型的唯一标识名；
	 * 
	 * @return
	 */
	@AliasFor(annotation = Component.class)
	String value() default "";
	
	
	/**
	 * 数据实体类型的唯一标识名；<p>
	 * 
	 * 是 {@link #value()} 属性的别名；
	 * 
	 * @return
	 */
	@AliasFor(value ="value", annotation = Component.class)
	String name() default "";
	
	
	/**
	 * 主题名称，指明数据实体用途的描述性的名称；
	 * 
	 * @return
	 */
	String topic() default "";
	
}
